package com.erp.erp_ui.business.req;

import com.erp.erp_ui.warehouse.req.AnnexReq;
import org.hibernate.validator.constraints.NotEmpty;

import java.math.BigDecimal;
import java.util.List;

/**
 * @ClassName : AddExportContractReq
 * @Description : 新增外销入参实体
 * @Author : lst
 * @Date: 2021-01-17 11:42
 */
public class AddExportContractReq {

    /**
     * 主键
     */
    private Integer id;

    /**
     * 单号
     */
    @NotEmpty(message = "单号不能为空")
    private String billNo;

    /**
     * 新单号
     */
    private String newBillNo;

    /**
     * 客户名称
     */
    private String customerName;
    /**
     * 客户编码
     */
    private String customerCode;
    /**
     * 客户联系人
     */
    private String customerContactName;
    /**
     * 联系人邮箱
     */
    private String contactEmail;
    /**
     * 客户合同号
     */
    private String customerContactNo;
    /**
     * 签约日期
     */
    private String signingDate;
    /**
     * 签约公司名称
     */
    private String signingCompanyName;
    /**
     * 签约公司编码
     */
    private String signingCompanyCode;
    /**
     * 银行编码
     */
    private String bankCode;
    /**
     * 银行名称
     */
    private String bankName;
    /**
     * 起运地
     */
    private String transitPlaceName;
    /**
     * 起运地编码
     */
    private String transitPlaceCode;
    /**
     * 目的地
     */
    private String destinationName;
    /**
     * 目的地编码
     */
    private String destinationCode;
    /**
     * 币种
     */
    private String currency;
    /**
     * 币种编码
     */
    private String currencyCode;
    /**
     * 人民币汇率
     */
    private BigDecimal rmbRate;
    /**
     * 美金汇率
     */
    private BigDecimal usdRate;
    /**
     * 备货期限
     */
    private String leadTime;
    /**
     * 出运日期
     */
    private String carryTime;
    /**
     * 瓶底是否指定Logo(1:不指定，2：指定光面，3：指定客户Logo，4：指定Rtco Logo)
     */
    private Integer modeOfTrade;
    /**
     * 运输方式
     */
    private String modeOfTransport;
    /**
     * 运输方式编码
     */
    private String transportCode;
    /**
     * 价格术语
     */
    private String priceTermsName;
    /**
     * 价格术语编码
     */
    private String priceTermsCode;
    /**
     * 付款期限
     */
    private String paymentTerm;
    /**
     * 业务员名称
     */
    private String salesmanName;
    /**
     * 业务员编码
     */
    private String salesmanCode;
    /**
     * 业务模式
     */
    private String businessModelName;
    /**
     * 业务模式编码
     */
    private String businessModelCode;
    /**
     * 充值占用(0:否 1:是)
     */
    private Integer rechargeOccupancy;
    /**
     * 是否报关(0:否 1:是)
     */
    private Integer isDeclare;
    /**
     * 分批出运(0:否 1:是)
     */
    private Integer shipmentInBatches;
    /**
     * 是否打托(0:否 1:是)
     */
    private Integer whetherToSupport;
    /**
     * 是否补货(0:否 1:是)
     */
    private Integer whetherToReplenish;
    /**
     * 是否采购(0:否 1:是)
     */
    private Integer whetherToPurchase;
    /**
     * 是否走信保订单(0:否 1:是)
     */
    private Integer whetherCreditGuarantee;
    /**
     * 唛头(0:否 1:是)
     */
    private Integer shippingMark;
    /**
     * 货柜型号
     */
    private String containerType;
    /**
     * 货柜型号编码
     */
    private String containerTypeCode;
    /**
     * 付款类型
     */
    private String paymentTypeName;
    /**
     * 付款类型编码
     */
    private String paymentTypeCode;
    /**
     * 客户账期
     */
    private String customerAccountingPeriod;
    /**
     * 客诉单号
     */
    private String customerComplaintNo;
    /**
     * 预收款比例
     */
    private BigDecimal advancePaymentRatio;
    /**
     * 预收款金额
     */
    private BigDecimal advancePaymentAmount;
    /**
     * 信保订单金额USD
     */
    private BigDecimal creditGuaranteeAmount;
    /**
     * 合同总额
     */
    private BigDecimal totalContractAmount;
    /**
     * 信用额度
     */
    private BigDecimal creditQuota;
    /**
     * 客户等级
     */
    private String customerLevelName;

    /**
     * 客户等级编码
     */
    private String customerLevelCode;

    /**
     * 国家编码
     */
    private String countryCode;

    /**
     * 国家名称
     */
    private String countryName;

    /**
     * 城市
     */
    private String city;

    /**
     * 备注
     */
    private String memo;



    /**
     * 产品明细对象集合
     */
    private List<AddExportContractProductReq> detailList;



    /**
     * 费用集合
     */
    private List<AddExportContractCostReq> costList;


    /**
     * 附件集合
     */
    private List<AnnexReq> annexList;

    /**
     * 被删除的老的附件id集合
     */
    private List<Integer> deleteAnnexIds;


    public BigDecimal getCreditQuota() {
        return creditQuota;
    }

    public void setCreditQuota(BigDecimal creditQuota) {
        this.creditQuota = creditQuota;
    }

    public Integer getShippingMark() {
        return shippingMark;
    }

    public void setShippingMark(Integer shippingMark) {
        this.shippingMark = shippingMark;
    }

    public String getCustomerLevelName() {
        return customerLevelName;
    }

    public void setCustomerLevelName(String customerLevelName) {
        this.customerLevelName = customerLevelName;
    }

    public String getCustomerLevelCode() {
        return customerLevelCode;
    }

    public void setCustomerLevelCode(String customerLevelCode) {
        this.customerLevelCode = customerLevelCode;
    }

    public String getTransportCode() {
        return transportCode;
    }

    public void setTransportCode(String transportCode) {
        this.transportCode = transportCode;
    }

    public String getContainerTypeCode() {
        return containerTypeCode;
    }

    public void setContainerTypeCode(String containerTypeCode) {
        this.containerTypeCode = containerTypeCode;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getBillNo() {
        return billNo;
    }

    public void setBillNo(String billNo) {
        this.billNo = billNo;
    }

    public String getNewBillNo() {
        return newBillNo;
    }

    public void setNewBillNo(String newBillNo) {
        this.newBillNo = newBillNo;
    }

    public String getCustomerName() {
        return customerName;
    }

    public void setCustomerName(String customerName) {
        this.customerName = customerName;
    }

    public String getCustomerCode() {
        return customerCode;
    }

    public void setCustomerCode(String customerCode) {
        this.customerCode = customerCode;
    }

    public String getCustomerContactName() {
        return customerContactName;
    }

    public void setCustomerContactName(String customerContactName) {
        this.customerContactName = customerContactName;
    }

    public String getContactEmail() {
        return contactEmail;
    }

    public void setContactEmail(String contactEmail) {
        this.contactEmail = contactEmail;
    }

    public String getCustomerContactNo() {
        return customerContactNo;
    }

    public void setCustomerContactNo(String customerContactNo) {
        this.customerContactNo = customerContactNo;
    }

    public String getSigningDate() {
        return signingDate;
    }

    public void setSigningDate(String signingDate) {
        this.signingDate = signingDate;
    }

    public String getSigningCompanyName() {
        return signingCompanyName;
    }

    public void setSigningCompanyName(String signingCompanyName) {
        this.signingCompanyName = signingCompanyName;
    }

    public String getSigningCompanyCode() {
        return signingCompanyCode;
    }

    public void setSigningCompanyCode(String signingCompanyCode) {
        this.signingCompanyCode = signingCompanyCode;
    }

    public String getBankCode() {
        return bankCode;
    }

    public void setBankCode(String bankCode) {
        this.bankCode = bankCode;
    }

    public String getBankName() {
        return bankName;
    }

    public void setBankName(String bankName) {
        this.bankName = bankName;
    }

    public String getTransitPlaceName() {
        return transitPlaceName;
    }

    public void setTransitPlaceName(String transitPlaceName) {
        this.transitPlaceName = transitPlaceName;
    }

    public String getTransitPlaceCode() {
        return transitPlaceCode;
    }

    public void setTransitPlaceCode(String transitPlaceCode) {
        this.transitPlaceCode = transitPlaceCode;
    }

    public String getDestinationName() {
        return destinationName;
    }

    public void setDestinationName(String destinationName) {
        this.destinationName = destinationName;
    }

    public String getDestinationCode() {
        return destinationCode;
    }

    public void setDestinationCode(String destinationCode) {
        this.destinationCode = destinationCode;
    }

    public String getCurrency() {
        return currency;
    }

    public void setCurrency(String currency) {
        this.currency = currency;
    }

    public String getCurrencyCode() {
        return currencyCode;
    }

    public void setCurrencyCode(String currencyCode) {
        this.currencyCode = currencyCode;
    }

    public BigDecimal getRmbRate() {
        return rmbRate;
    }

    public void setRmbRate(BigDecimal rmbRate) {
        this.rmbRate = rmbRate;
    }

    public BigDecimal getUsdRate() {
        return usdRate;
    }

    public void setUsdRate(BigDecimal usdRate) {
        this.usdRate = usdRate;
    }

    public String getLeadTime() {
        return leadTime;
    }

    public void setLeadTime(String leadTime) {
        this.leadTime = leadTime;
    }

    public String getCarryTime() {
        return carryTime;
    }

    public void setCarryTime(String carryTime) {
        this.carryTime = carryTime;
    }

    public Integer getModeOfTrade() {
        return modeOfTrade;
    }

    public void setModeOfTrade(Integer modeOfTrade) {
        this.modeOfTrade = modeOfTrade;
    }

    public String getModeOfTransport() {
        return modeOfTransport;
    }

    public void setModeOfTransport(String modeOfTransport) {
        this.modeOfTransport = modeOfTransport;
    }

    public String getPriceTermsName() {
        return priceTermsName;
    }

    public void setPriceTermsName(String priceTermsName) {
        this.priceTermsName = priceTermsName;
    }

    public String getPriceTermsCode() {
        return priceTermsCode;
    }

    public void setPriceTermsCode(String priceTermsCode) {
        this.priceTermsCode = priceTermsCode;
    }

    public String getPaymentTerm() {
        return paymentTerm;
    }

    public void setPaymentTerm(String paymentTerm) {
        this.paymentTerm = paymentTerm;
    }

    public String getSalesmanName() {
        return salesmanName;
    }

    public void setSalesmanName(String salesmanName) {
        this.salesmanName = salesmanName;
    }

    public String getSalesmanCode() {
        return salesmanCode;
    }

    public void setSalesmanCode(String salesmanCode) {
        this.salesmanCode = salesmanCode;
    }

    public String getBusinessModelName() {
        return businessModelName;
    }

    public void setBusinessModelName(String businessModelName) {
        this.businessModelName = businessModelName;
    }

    public String getBusinessModelCode() {
        return businessModelCode;
    }

    public void setBusinessModelCode(String businessModelCode) {
        this.businessModelCode = businessModelCode;
    }

    public Integer getRechargeOccupancy() {
        return rechargeOccupancy;
    }

    public void setRechargeOccupancy(Integer rechargeOccupancy) {
        this.rechargeOccupancy = rechargeOccupancy;
    }

    public Integer getIsDeclare() {
        return isDeclare;
    }

    public void setIsDeclare(Integer isDeclare) {
        this.isDeclare = isDeclare;
    }

    public String getContainerType() {
        return containerType;
    }

    public void setContainerType(String containerType) {
        this.containerType = containerType;
    }

    public String getPaymentTypeName() {
        return paymentTypeName;
    }

    public void setPaymentTypeName(String paymentTypeName) {
        this.paymentTypeName = paymentTypeName;
    }

    public String getPaymentTypeCode() {
        return paymentTypeCode;
    }

    public void setPaymentTypeCode(String paymentTypeCode) {
        this.paymentTypeCode = paymentTypeCode;
    }

    public String getCustomerAccountingPeriod() {
        return customerAccountingPeriod;
    }

    public void setCustomerAccountingPeriod(String customerAccountingPeriod) {
        this.customerAccountingPeriod = customerAccountingPeriod;
    }

    public String getCustomerComplaintNo() {
        return customerComplaintNo;
    }

    public void setCustomerComplaintNo(String customerComplaintNo) {
        this.customerComplaintNo = customerComplaintNo;
    }

    public BigDecimal getAdvancePaymentRatio() {
        return advancePaymentRatio;
    }

    public void setAdvancePaymentRatio(BigDecimal advancePaymentRatio) {
        this.advancePaymentRatio = advancePaymentRatio;
    }

    public BigDecimal getAdvancePaymentAmount() {
        return advancePaymentAmount;
    }

    public void setAdvancePaymentAmount(BigDecimal advancePaymentAmount) {
        this.advancePaymentAmount = advancePaymentAmount;
    }

    public BigDecimal getTotalContractAmount() {
        return totalContractAmount;
    }

    public void setTotalContractAmount(BigDecimal totalContractAmount) {
        this.totalContractAmount = totalContractAmount;
    }

    public String getMemo() {
        return memo;
    }

    public void setMemo(String memo) {
        this.memo = memo;
    }

    public List<AddExportContractProductReq> getDetailList() {
        return detailList;
    }

    public void setDetailList(List<AddExportContractProductReq> detailList) {
        this.detailList = detailList;
    }

    public List<AddExportContractCostReq> getCostList() {
        return costList;
    }

    public void setCostList(List<AddExportContractCostReq> costList) {
        this.costList = costList;
    }

    public List<AnnexReq> getAnnexList() {
        return annexList;
    }

    public void setAnnexList(List<AnnexReq> annexList) {
        this.annexList = annexList;
    }

    public Integer getShipmentInBatches() {
        return shipmentInBatches;
    }

    public void setShipmentInBatches(Integer shipmentInBatches) {
        this.shipmentInBatches = shipmentInBatches;
    }

    public Integer getWhetherToSupport() {
        return whetherToSupport;
    }

    public void setWhetherToSupport(Integer whetherToSupport) {
        this.whetherToSupport = whetherToSupport;
    }

    public Integer getWhetherToPurchase() {
        return whetherToPurchase;
    }

    public void setWhetherToPurchase(Integer whetherToPurchase) {
        this.whetherToPurchase = whetherToPurchase;
    }

    public Integer getWhetherCreditGuarantee() {
        return whetherCreditGuarantee;
    }

    public void setWhetherCreditGuarantee(Integer whetherCreditGuarantee) {
        this.whetherCreditGuarantee = whetherCreditGuarantee;
    }

    public BigDecimal getCreditGuaranteeAmount() {
        return creditGuaranteeAmount;
    }

    public void setCreditGuaranteeAmount(BigDecimal creditGuaranteeAmount) {
        this.creditGuaranteeAmount = creditGuaranteeAmount;
    }

    public Integer getWhetherToReplenish() {
        return whetherToReplenish;
    }

    public void setWhetherToReplenish(Integer whetherToReplenish) {
        this.whetherToReplenish = whetherToReplenish;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public String getCountryCode() {
        return countryCode;
    }

    public void setCountryCode(String countryCode) {
        this.countryCode = countryCode;
    }

    public String getCountryName() {
        return countryName;
    }

    public void setCountryName(String countryName) {
        this.countryName = countryName;
    }

    public List<Integer> getDeleteAnnexIds() {
        return deleteAnnexIds;
    }

    public void setDeleteAnnexIds(List<Integer> deleteAnnexIds) {
        this.deleteAnnexIds = deleteAnnexIds;
    }


    /**
     * 重写toString
     */
    @Override
    public String toString() {
        final StringBuilder sb = new StringBuilder("AddExportContractReq").append('[')
                .append("id=")
                .append(id)
                .append(",billNo=")
                .append(billNo)
                .append(",newBillNo=")
                .append(newBillNo)
                .append(",customerName=")
                .append(customerName)
                .append(",customerCode=")
                .append(customerCode)
                .append(",customerContactName=")
                .append(customerContactName)
                .append(",contactEmail=")
                .append(contactEmail)
                .append(",customerContactNo=")
                .append(customerContactNo)
                .append(",signingDate=")
                .append(signingDate)
                .append(",signingCompanyName=")
                .append(signingCompanyName)
                .append(",signingCompanyCode=")
                .append(signingCompanyCode)
                .append(",bankCode=")
                .append(bankCode)
                .append(",bankName=")
                .append(bankName)
                .append(",transitPlaceName=")
                .append(transitPlaceName)
                .append(",transitPlaceCode=")
                .append(transitPlaceCode)
                .append(",destinationName=")
                .append(destinationName)
                .append(",destinationCode=")
                .append(destinationCode)
                .append(",currency=")
                .append(currency)
                .append(",currencyCode=")
                .append(currencyCode)
                .append(",rmbRate=")
                .append(rmbRate)
                .append(",usdRate=")
                .append(usdRate)
                .append(",leadTime=")
                .append(leadTime)
                .append(",carryTime=")
                .append(carryTime)
                .append(",modeOfTrade=")
                .append(modeOfTrade)
                .append(",modeOfTransport=")
                .append(modeOfTransport)
                .append(",transportCode=")
                .append(transportCode)
                .append(",priceTermsName=")
                .append(priceTermsName)
                .append(",priceTermsCode=")
                .append(priceTermsCode)
                .append(",paymentTerm=")
                .append(paymentTerm)
                .append(",salesmanName=")
                .append(salesmanName)
                .append(",salesmanCode=")
                .append(salesmanCode)
                .append(",businessModelName=")
                .append(businessModelName)
                .append(",businessModelCode=")
                .append(businessModelCode)
                .append(",rechargeOccupancy=")
                .append(rechargeOccupancy)
                .append(",isDeclare=")
                .append(isDeclare)
                .append(",shipmentInBatches=")
                .append(shipmentInBatches)
                .append(",whetherToSupport=")
                .append(whetherToSupport)
                .append(",whetherToReplenish=")
                .append(whetherToReplenish)
                .append(",whetherToPurchase=")
                .append(whetherToPurchase)
                .append(",whetherCreditGuarantee=")
                .append(whetherCreditGuarantee)
                .append(",shippingMark=")
                .append(shippingMark)
                .append(",containerType=")
                .append(containerType)
                .append(",containerTypeCode=")
                .append(containerTypeCode)
                .append(",paymentTypeName=")
                .append(paymentTypeName)
                .append(",paymentTypeCode=")
                .append(paymentTypeCode)
                .append(",customerAccountingPeriod=")
                .append(customerAccountingPeriod)
                .append(",customerComplaintNo=")
                .append(customerComplaintNo)
                .append(",advancePaymentRatio=")
                .append(advancePaymentRatio)
                .append(",advancePaymentAmount=")
                .append(advancePaymentAmount)
                .append(",creditGuaranteeAmount=")
                .append(creditGuaranteeAmount)
                .append(",totalContractAmount=")
                .append(totalContractAmount)
                .append(",creditQuota=")
                .append(creditQuota)
                .append(",customerLevelName=")
                .append(customerLevelName)
                .append(",customerLevelCode=")
                .append(customerLevelCode)
                .append(",countryCode=")
                .append(countryCode)
                .append(",countryName=")
                .append(countryName)
                .append(",city=")
                .append(city)
                .append(",memo=")
                .append(memo)
                .append(",detailList=")
                .append(detailList)
                .append(",costList=")
                .append(costList)
                .append(",annexList=")
                .append(annexList)
                .append(",deleteAnnexIds=")
                .append(deleteAnnexIds)
                .append(']');
        return sb.toString();
    }
}
